// pages/login/index.js
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		code: '',
		// 生成的随机验证码
		RandomCode:'',
		// 输入的验证码
		input_code:'',
		height: 64, //header高度
		top: 26, //标题图标距离顶部距离
		scrollH: 0, //滚动总高度
		barHeight: '32',
		opcity: 0,
		opcity_bg: 1,
		avatarUrl: '', //头像(全路径)
		half_avatarUrl: '', //头像(半路径,上传用)
		nickName: '', //昵称
		telephone: '', //手机号
		register: '', //是新注册还是重新登录
		back: true,
		//协议
		isAgree: false, //相关协议是否同意
		checkbox_animate: false, //震动效果
		focus: false
	},
	yinsi() {

		wx.openPrivacyContract({
			success: res => {
				console.log('openPrivacyContract success')
			},
			fail: res => {
				console.error('openPrivacyContract fail', res)
			}
		})

		// wx.requirePrivacyAuthorize({
		//     success: res => {
		//         console.log('用户同意了隐私协议或无需用户同意隐私协议')
		//         // 用户同意隐私协议后给昵称input聚焦
		//         this.setData({
		//             focus: true
		//         })
		//     },
		//     fail: res => {
		//         console.log('用户拒绝了隐私协议')
		//     }
		// })
	},
	handleTouchInput() {
		wx.requirePrivacyAuthorize({
			success: res => {
				console.log('用户同意了隐私协议或无需用户同意隐私协议')
				// 用户同意隐私协议后给昵称input聚焦
				this.setData({
					focus: true
				})
			},
			fail: res => {
				console.log('用户拒绝了隐私协议')
			}
		})
	},
	handleGetNickname(e) {
		// 这里在工具上有bug，请使用手机扫码来验证
		console.log('nickname is', e.detail.value)
	},
	//协议勾选
	checks: function (e) {
		this.setData({
			isAgree: !!e.detail.value.length
		})
	},
	// //监听
	bind_set: function (e) { },
	//授权手机号(用手机号查询是否注册过、没注册过需要填写相关信息， 注册过直接登录)
	getPhoneNumber: function (e) {
		console.log(e);
		var that = this;
		// if (e.detail.errMsg == "getPhoneNumber:ok") {
		//     that.setData({
		//         telephone: '13130599757', //替换授权过来的手机号
		//         register: false, //如果注册过true/false
		//         isAgree:true
		//     });
		// }
		if (e.detail.errMsg == "getPhoneNumber:ok") {
			var params = {}
			params.encryptedData = e.detail.encryptedData
			params.iv = e.detail.iv
			params.code = e.detail.code;

			getApp().util.request({
				url: 'user/get_mobile',
				data: params,
			}).then(function (res) {
				console.log(res)
				that.setData({
					telephone: res.phone,
					isAgree: true
				})
			})
		} else {
			wx.showToast({
				title: e.detail.errMsg,
				icon: 'none'
			});
		}
	},
	// //选择头像
	onChooseAvatar(e) {
		var that = this;
		const {
			avatarUrl
		} = e.detail;
		console.log(avatarUrl)
		wx.getImageInfo({
			src: e.detail.avatarUrl,
			success(res) {
				if (res.width !== res.height) { //如果不是正方形 进行裁剪工作
					//微信裁剪接口（2.26.0 开始支持）
					wx.cropImage({
						src: e.detail.avatarUrl, // 图片路径
						cropScale: '1:1', // 裁剪比例
						success(res) {
							console.log(res)
							that.setData({
								avatarUrl: res.tempFilePath
							})
						},
						fail: function (res) { },
						complete: function (res) { }
					})

				} else {
					that.setData({
						avatarUrl,
					})
				}
			},
			fail: function (res) { },
			complete: function (res) { }
		})
	},

	//提交登录
	formSubmit: function (e) {
		var that = this;
		let telephone = that.data.telephone; //手机号
		let avatarUrl = that.data.avatarUrl; //头像
		let nickName = that.data.nickName; //昵称
		let register = that.data.register; //是新注册还是登录
		let isAgree = that.data.isAgree; //相关协议是否同意
		let {RandomCode,input_code} = that.data;
		console.log(avatarUrl)
		if (telephone == '') {
			wx.showToast({
				title: '请授权手机号码',
				icon: 'none',
				mask: false,
			});
			return false;
		}
		if(RandomCode !== input_code){
			wx.showToast({
				title: '请输入正确的验证码',
				icon: 'none',
				mask: false,
			});
			return false;
		}
		// if (register == false) {
		//     if (telephone == '') {
		//         wx.showToast({
		//             title: '请授权手机号码',
		//             icon: 'none',
		//             mask: false,
		//         });
		//         return false;
		//     } else if (avatarUrl == '') {
		//         wx.showToast({
		//             title: '请上传头像',
		//             icon: 'none',
		//             mask: false,
		//         });
		//         return false;
		//     } else if (nickName == '') {
		//         wx.showToast({
		//             title: '请填写昵称',
		//             icon: 'none',
		//             mask: false,
		//         });
		//         return false;
		//     } else if (isAgree == false) {
		//         wx.showToast({
		//             title: '请阅读并同意相关协议条款',
		//             icon: 'none',
		//             duration: 1500
		//         });
		//         that.setData({
		//             checkbox_animate: true
		//         })
		//         setTimeout(() => {
		//             that.setData({
		//                 checkbox_animate: false
		//             })
		//         }, 1500)
		//         return false
		//     }
		// }
		if (isAgree == false) {
			wx.showToast({
				title: '请阅读并同意相关协议条款',
				icon: 'none',
				duration: 1500
			});
			that.setData({
				checkbox_animate: true
			})
			setTimeout(() => {
				that.setData({
					checkbox_animate: false
				})
			}, 1500)
			return false
		}
		that.setData({
			disabled: true
		})

		wx.login({
			//成功放回
			success: (res) => {
				let code = res.code
				let params = {
					code: code,
					// headimg: avatarUrl,
					// nickname: nickName,
					mobile: telephone,
				};
				// let P_account_id = wx.getStorageSync('P_account_id');
				// params.p_account_id = P_account_id
				getApp().util.request({
					url: 'user/wxlogin',
					data: params,
				}).then(function (res) {
					let token = res
					wx.setStorageSync('token', token)
					wx.showToast({
						title: '登录中...',
						icon: 'loading',
						mask: true,
						duration: 1500,
						success: function () {
							var pages = getCurrentPages();
							var prevPage = pages[pages.length - 2]; //上一个页面
							if (prevPage) { //有上一页的 返回上一页
								wx.navigateBack({ // 登录成功后返回来源页面
									delta: 1
								})
							} else {
								wx.reLaunch({
									url: '/pages/index/index',
								})
							}
						}
					})
				},function(err){
					that.setData({
						disabled: false,
					})
					that.drawCaptcha();
				})
				that.setData({
					disabled: false,
				})
			},
			error: (res) => {
				console.log(res);
				that.setData({
					disabled: false,
				})
				that.drawCaptcha();
			}
		})
	},
	//返回上一页
	to_back: function (e) {
		// wx.navigateBack({
		//   delta: 1
		// })
	},
	//返回首页
	to_home: function (e) {
		// wx.switchTab({
		//   url: '/pages/home/index',
		// })
	},
	//跳转协议
	to_page: function (e) {
		// wx.navigateTo({
		//   url: '/pages/mydown/pages/about/index?id=1'
		// })
	},
	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		var that = this;
		let obj = wx.getMenuButtonBoundingClientRect();
		this.setData({
			height: obj.top + obj.height + 8,
			top: obj.top + (obj.height - 32) / 2,
			barHeight: obj.height
		});
		var pages = getCurrentPages();
		var prevPage = pages[pages.length - 2]; //上一个页面
		if (prevPage) { //有上一页的 返回上一页
			that.setData({
				back: true
			})
		} else {
			that.setData({
				back: false
			})
		}
	},
	// 生成随机验证码
	generateRandomCode: function () {
		const codeLength = 4;
		const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
		let code = '';
		for (let i = 0; i < codeLength; i++) {
			const randomIndex = Math.floor(Math.random() * chars.length);
			code += chars.charAt(randomIndex);
		}
		return code;
	},
	// 绘制验证码
	drawCaptcha: function () {
		const ctx = wx.createCanvasContext('captchaCanvas');
		const code = this.generateRandomCode();
		this.setData({
			RandomCode:code,
		})

		// 设置画布背景色
		ctx.setFillStyle('#f5f5f5');
		ctx.fillRect(0, 0, 0, 0);

		// 设置字体样式
		ctx.setFontSize(20);

		for (let i = 0; i < code.length; i++) {
			// 随机生成每个字符的颜色
			const color = this.getRandomColor();

			// 倾斜角度随机在 -10 到 10 度之间
			const angle = (Math.random() - 0) * 0.5 * Math.PI / 180;

			// 在画布上绘制验证码
			ctx.setFillStyle(color);
			ctx.rotate(angle);
			ctx.fillText(code[i], 20 + i * 15, 25);
			ctx.rotate(-angle);
		}

		// 绘制干扰线
		for (let i = 0; i < 4; i++) {
			ctx.setStrokeStyle(this.getRandomColor());
			ctx.beginPath();
			ctx.moveTo(Math.random() * 200, Math.random() * 80);
			ctx.lineTo(Math.random() * 200, Math.random() * 80);
			ctx.stroke();
		}
		// 绘制干扰点
		for (let i = 0; i < 60; i++) {
			ctx.setFillStyle(this.getRandomColor());
			ctx.beginPath();
			ctx.arc(Math.random() * 200, Math.random() * 80, 1, 0, 2 * Math.PI);
			ctx.fill();
		}
		// 绘制完成
		ctx.draw();
	},

	// 刷新验证码
	refreshCaptcha: function () {
		this.drawCaptcha();
	},

	// 获取随机颜色
	getRandomColor: function () {
		const colors = ['#333', '#666', '#999', '#ccc', '#aaa', '#f00', '#0f0', '#00f'];
		return colors[Math.floor(Math.random() * colors.length)];
	},
	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {
		this.drawCaptcha();
	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})